package com.ruoyi.system.wnjk.domain.po;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 挂号订单对象 wnjk_registration_order
 *
 * @author ruoyi
 * @date 2025-03-16
 */
@Data
public class WnjkRegistrationOrder extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    private Long id;

    /**
     * 订单编号
     */
    @Excel(name = "订单编号")
    private String orderNumber;

    /**
     * 就诊人ID（逻辑外键，对应 wnjk_patient.id）
     */
    @Excel(name = "就诊人ID", readConverterExp = "逻=辑外键，对应,w=njk_patient.id")
    private Long patientId;

    /**
     * 用户ID（逻辑外键，对应 wnjk_patient.id）
     */
    @Excel(name = "就诊人ID", readConverterExp = "逻=辑外键，对应,w=njk_patient.id")
    private Long userId;

    /**
     * 医院ID（逻辑外键，对应 wnjk_hospital.id）
     */
    @Excel(name = "医院ID", readConverterExp = "逻=辑外键，对应,w=njk_hospital.id")
    private Long hospitalId;

    /**
     * 科室ID（逻辑外键，对应 wnjk_department.id）
     */
    @Excel(name = "科室ID", readConverterExp = "逻=辑外键，对应,w=njk_department.id")
    private Long departmentId;

    /**
     * 医生ID（逻辑外键，对应 wnjk_doctor.id）
     */
    @Excel(name = "医生ID", readConverterExp = "逻=辑外键，对应,w=njk_doctor.id")
    private Long doctorId;

    /**
     * 就诊时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "就诊时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date appointmentTime;

    /**
     * 订单创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "订单创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date orderTime;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentTime;

    /**
     * 支付方式
     */
    @Excel(name = "支付方式")
    private String paymentMethod;

    /** 订单有效期（套餐使用截止日期） */
    @Excel(name = "订单有效期", readConverterExp = "套=餐使用截止日期")
    private Date validUntil;

    /**
     * 订单状态
     */
    @Excel(name = "订单状态")
    private String orderStatus;

    /**
     * 挂号费用
     */
    @Excel(name = "挂号费用")
    private BigDecimal fee;

    /**
     * 支付宝交易流水号
     */
    @Excel(name = "支付宝交易流水号")
    private String alipayTradeNo;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setOrderNumber(String orderNumber) {
        this.orderNumber = orderNumber;
    }

    public Date getValidUntil() {
        return validUntil;
    }

    public void setValidUntil(Date validUntil) {
        this.validUntil = validUntil;
    }

    public String getOrderNumber() {
        return orderNumber;
    }

    public void setPatientId(Long patientId) {
        this.patientId = patientId;
    }

    public Long getPatientId() {
        return patientId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setHospitalId(Long hospitalId) {
        this.hospitalId = hospitalId;
    }

    public Long getHospitalId() {
        return hospitalId;
    }

    public void setDepartmentId(Long departmentId) {
        this.departmentId = departmentId;
    }

    public Long getDepartmentId() {
        return departmentId;
    }

    public void setDoctorId(Long doctorId) {
        this.doctorId = doctorId;
    }

    public Long getDoctorId() {
        return doctorId;
    }

    public void setAppointmentTime(Date appointmentTime) {
        this.appointmentTime = appointmentTime;
    }

    public Date getAppointmentTime() {
        return appointmentTime;
    }

    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }

    public Date getOrderTime() {
        return orderTime;
    }

    public void setPaymentTime(Date paymentTime) {
        this.paymentTime = paymentTime;
    }

    public Date getPaymentTime() {
        return paymentTime;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getOrderStatus() {
        return orderStatus;
    }

    public void setFee(BigDecimal fee) {
        this.fee = fee;
    }

    public BigDecimal getFee() {
        return fee;
    }

    public void setAlipayTradeNo(String alipayTradeNo) {
        this.alipayTradeNo = alipayTradeNo;
    }

    public String getAlipayTradeNo() {
        return alipayTradeNo;
    }


    @Override
    public String toString() {
        return "WnjkRegistrationOrder{" +
                "id=" + id +
                ", orderNumber='" + orderNumber + '\'' +
                ", patientId=" + patientId +
                ", userId=" + userId +
                ", hospitalId=" + hospitalId +
                ", departmentId=" + departmentId +
                ", doctorId=" + doctorId +
                ", appointmentTime=" + appointmentTime +
                ", orderTime=" + orderTime +
                ", paymentTime=" + paymentTime +
                ", paymentMethod='" + paymentMethod + '\'' +
                ", validUntil=" + validUntil +
                ", orderStatus='" + orderStatus + '\'' +
                ", fee=" + fee +
                ", alipayTradeNo='" + alipayTradeNo + '\'' +
                '}';
    }
}
